package com.maxwell.googleplay.utils;

import com.maxwell.googleplay.base.BaseApplicaiton;

import android.content.Context;
import android.content.res.Resources;
import android.content.res.Resources.NotFoundException;
import android.os.Handler;
import android.text.GetChars;

/**
 * @author yue
 * @创建时间 2016-3-29下午5:19:46
 * @描述 和UI相关的工具类
 * 
 */
public class UIUtils {
	/** 得到上下文 ***/
	public static Context getContext() {
		return BaseApplicaiton.getContext();
	}

	/** 得到Resource对象 ***/
	public static Resources getResource() {
		return getContext().getResources();
	}

	/** 得到String.xml中的字符串 ***/
	public static String getString(int resId) {
		return getResource().getString(resId);
	}
	/** 得到String.xml中的带占位符字符串 ***/
	public static String getString(int id, Object... formatArgs){
		return getResource().getString(id, formatArgs);
	}
	
	
	
	/** 得到String.xml中的字符串数组 ***/
	public static String[] getStringArr(int resId) {
		return getResource().getStringArray(resId);
	}

	/** 得到Color.xml中的颜色 ***/
	public static int getColor(int colorId) {
		return getResource().getColor(colorId);
	}

	/** 得到应用程序的包名 ***/
	public static String getPackageName() {

		return getContext().getPackageName();
	}

	/** 得到主线程的Id ***/
	public static long getMainThreadId() {
		return BaseApplicaiton.getMainThreadId();
	}

	/** 得到主线程的Handler ***/
	public static Handler getMainThreadHandler() {
		return BaseApplicaiton.getHandler();
	}

	/** 安全的执行一个任务 ***/
	public static void postTaskSafely(Runnable task) {
		int curThreadId = android.os.Process.myTid();
		// 如果当前线程是主线程
		if (curThreadId == getMainThreadId()) {
			task.run();
		} else {// 如果当前线程不是主线程
			getMainThreadHandler().post(task);
		}

	}
	
	/** 延迟执行一个任务 ***/
	public static void postTaskDelay(Runnable task, int delayMillis) {
		getMainThreadHandler().postDelayed(task, delayMillis);
	}
	/** 移除一个任务 ***/
	public static void removeTask(Runnable task) {
		
		getMainThreadHandler().removeCallbacks(task);
	}

	/**
	 * dip--->px
	 * 
	 * @param i
	 * @return
	 */
	public static int dip2px(int dip) {
		// px/dip = density;
		// density = dpi/160;

		float density = getResource().getDisplayMetrics().density;
		int px = (int) (dip * density + 0.5f);

		return px;
	}

	/**
	 * px--->dip
	 * @param i
	 * @return
	 */
	public static int px2dip(int px) {
		// px/dip = density;
		// density = dpi/160;

		float density = getResource().getDisplayMetrics().density;
		int dip = (int) (px / density + 0.5f);

		return dip;
	}

	
}
